<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
  <link rel="stylesheet" href="php-txt-db-api.css" type="text/css">
  <title>Txt-db-api mit PEAR verwenden</title>
</head>
<body>
<h1 align="left">Txt-db-api mit PEAR verwenden</h1>
<div style="text-align: left;"><span class="postbody">Im Verzeichnis
pear findet man seit neustem eine Datei txtdbapi.php.<br>
Dabei handelt es sich um einen Text-Db-Api Datenbankwrapper f&uuml;r
PEAR.<br>
<br>
</span>
<h2 align="left">Installation</h2>
<span class="postbody">Diese Datei wird
zu den anderen Datenbankwrappern in das Verzeichnis </span><br>
</div>
<span class="postbody"></span><br>
<div style="text-align: left;"><span class="postbody">/usr/share/php/DB/
(&uuml;blich bei *nix installationen) oder
&lt;php-installation&gt;/PEAR/DB (auf windows) kopiert werden. </span><br>
<span class="postbody"></span><br>
<span class="postbody">Der connect-String f&uuml;r die Txt-Db-Api sieht
folgendermassen aus: </span><br>
<span class="postbody">txtdbapi://localhost/&lt;dbname&gt; <br>
</span>
<h2 align="left"><br>
</h2>
<h2 align="left">Beispiel</h2>
<span class="postbody"></span><br>
<span class="postbody">So k&ouml;nnte dann eine Beispiel Datenabfrage
aussehen: </span><br>
<span class="postbody"></span></div>
<table style="text-align: left; margin-left: 0px; margin-right: auto;"
 border="0" cellpadding="3" cellspacing="1" width="90%">
  <tbody>
    <tr>
      <td><span class="genmed"><b>Code:</b></span></td>
    </tr>
    <tr>
      <td class="code">&lt;? <br>
      <br>
include "DB.php"; <br>
include "txt-db-api.php"; <br>
      <br>
$dbc = DB::connect("txtdbapi://localhost/soulspring"); <br>
//$dbc = DB::connect("mysql://user:password@localhost/soulspring"); <br>
      <br>
$dbc-&gt;setFetchMode(DB_FETCHMODE_ASSOC); <br>
      <br>
// Einfacher SELECT mit Ausgabe <br>
$result = $dbc-&gt;query("SELECT * FROM news"); <br>
      <br>
if (PEAR::isError($result)) { <br>
&nbsp; &nbsp;print $result-&gt;getUserInfo(); <br>
} <br>
      <br>
if ($result-&gt;numRows()) { <br>
&nbsp; &nbsp;$row = array(); <br>
&nbsp; &nbsp;while($row = $result-&gt;fetchRow()) { <br>
&nbsp; &nbsp;&nbsp; &nbsp;print_r($row); <br>
&nbsp; &nbsp;} <br>
} else { <br>
&nbsp; &nbsp;print "No results available\n"; <br>
} <br>
      <br>
// Test f&uuml;r UPDATE und affectedRows() <br>
$dbc-&gt;query("UPDATE news SET titel = 'Txt-Db-Api goes PEAR' WHERE id
= '5' "); <br>
print "Affected Rows: " . $dbc-&gt;affectedRows(); <br>
      <br>
// Andere Tests: <br>
// getAll() liefert alle Datens&auml;tze <br>
// getCol() liefert nur eine bestimmte Spalte (0=erste Spaltem,
1=zweite, ...) <br>
print_r($dbc-&gt;getAll("SELECT * FROM programm", null,
DB_FETCHMODE_ASSOC)); <br>
print_r($dbc-&gt;getCol("SELECT * FROM programm", 1)); <br>
      <br>
$dbc-&gt;disconnect(); <br>
      <br>
?&gt;</td>
    </tr>
  </tbody>
</table>
<div style="text-align: left;"><span class="postbody"></span><br>
<span class="postbody"></span><br>
<span class="postbody">Wenn der andere connect string oben
auskommentiert wird, dann l&auml;uft das ganze ohne Problem unter
MySQL, oder auch anderen Datenbanken. </span><br>
<span class="postbody"></span><br>
<span class="postbody"></span><span class="postbody"></span><span
 class="postbody"></span><span class="postbody">Wenn man keinen Zugriff
auf das PEAR verzeichnis
hat (wie bei vielen Webprov&iacute;dern), dann reicht es GLAUB ich
auch, nur folgende Dateien auf den Server zu laden: </span><br>
<span class="postbody"></span></div>
<table style="text-align: left; margin-left: 0px; margin-right: auto;"
 border="0" cellpadding="3" cellspacing="1" width="90%">
  <tbody>
    <tr>
      <td><span class="genmed"><b>Code:</b></span></td>
    </tr>
    <tr>
      <td class="code">WEB-ROOT <br>
| <br>
|--include <br>
|&nbsp; | <br>
|&nbsp; `-- DB <br>
|&nbsp; &nbsp; &nbsp; | <br>
|&nbsp; &nbsp; &nbsp; |-- common.php <br>
|&nbsp; &nbsp; &nbsp; |-- storage.php <br>
|&nbsp; &nbsp; &nbsp; `-- txtdbapi.php <br>
|-- DB.php <br>
`-- PEAR.php</td>
    </tr>
  </tbody>
</table>
<div style="text-align: left;"><span class="postbody"></span><br>
<span class="postbody"></span><br>
<span class="postbody">Im code kann man dann das PEAR::DB Modul so
einbinden: </span><br>
<span class="postbody">include "/include/DB.php" </span><br>
<span class="postbody"><br>
Dieser </span><span class="postbody">Workaround&nbsp; ist noch
Experimentell. Der Entwickler </span><span class="postbody">legt
f&uuml;r diesen Workaround nicht seine Hand ins Feier ;-) <br>
Probiert es einfach mal aus. <br>
<br>
<br>
</span><span class="postbody"></span></div>
</body>
</html>
